-
Notifications
You must be signed in to change notification settings - Fork 1.1k
GH-10058: Add Jackson 3 ObjectMapper and MessageParser #10160
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
...re/src/main/java/org/springframework/integration/support/json/Jackson3JsonMessageParser.java
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you!
This is great start!
Any chances to have some tests on the matter?
Especially I'm interested in those loaded by the Jackson 3 modules if we remove our custom collectWellKnownModulesIfAvailable()
.
Re. defaults in v3 VS v2: I have raised concern with the team.
Will come back to ASAP.
...re/src/main/java/org/springframework/integration/support/json/Jackson3JsonMessageParser.java
Outdated
Show resolved
Hide resolved
...ore/src/main/java/org/springframework/integration/support/json/Jackson3JsonObjectMapper.java
Outdated
Show resolved
Hide resolved
...re/src/main/java/org/springframework/integration/support/json/Jackson3JsonMessageParser.java
Outdated
Show resolved
Hide resolved
...ore/src/main/java/org/springframework/integration/support/json/Jackson3JsonObjectMapper.java
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The team decision is to keep Jackson 3 defaults since this is a major version it is better to dictate a modern protocols. Luckily, we expose an API to inject a customized ObjectMapper
.
...ore/src/main/java/org/springframework/integration/support/json/Jackson3JsonObjectMapper.java
Outdated
Show resolved
Hide resolved
...re/src/main/java/org/springframework/integration/support/json/Jackson3JsonMessageParser.java
Outdated
Show resolved
Hide resolved
ad80fa8
to
76984b1
Compare
...core/src/main/java/org/springframework/integration/support/json/JacksonJsonObjectMapper.java
Outdated
Show resolved
Hide resolved
...ore/src/main/java/org/springframework/integration/support/json/JsonObjectMapperProvider.java
Show resolved
Hide resolved
.../src/test/java/org/springframework/integration/support/json/JacksonJsonObjectMapperTest.java
Outdated
Show resolved
Hide resolved
.../src/test/java/org/springframework/integration/support/json/JacksonJsonObjectMapperTest.java
Outdated
Show resolved
Hide resolved
Related to: spring-projects#10058 * Add Jackson3JsonObjectMapper, Jackson3JsonMessageParser to prepare for Jackson 2 to 3 migration. Signed-off-by: Jooyoung Pyoung <[email protected]>
* Rename `Jackson3JsonObjectMapper` to `JacksonJsonObjectMapper` * Rename `Jackson3JsonMessageParser` to `JacksonJsonMessageParser` * Wrap `JacksonException` in `IOException` to maintain API contract * Replace manual module collection with `findAndAddModules()` Signed-off-by: Jooyoung Pyoung <[email protected]>
Signed-off-by: Jooyoung Pyoung <[email protected]>
* Add try-catch for valueToTree() call * Remove conditional module checks in tests * Update jsonAvailable() to check Jackson 3 Signed-off-by: Jooyoung Pyoung <[email protected]>
Related to: #10058
Jackson3JsonObjectMapper
,Jackson3JsonMessageParser
to prepare for Jackson 2 to 3 migration (Work3).Jackson 3 Exception Model Changes
Jackson 3 changed its exception hierarchy from checked to unchecked.
Now,
JacksonException
extendsRuntimeException
notIOException
.Jackson 3 default setting changes
Jackson 3.0 has different default settings compared to 2.x that may affect serialization behavior.
For example, these timestamp-related settings have changed:
WRITE_DATES_AS_TIMESTAMPS(false)
// was true in 2.xWRITE_DURATIONS_AS_TIMESTAMPS(false)
// was true in 2.xONE_BASED_MONTHS(true)
// was false in 2.xShould we maintain Jackson 2.x compatibility, or adopt Jackson 3 defaults?